﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using PanasonicWarranty.Business;
using System.Web.UI.HtmlControls;
using Utils;
using System.Data;
namespace PanasonicWarranty.UI
{
    public partial class WarrantyStatistics : BasePageManageWarranty
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindDropDownData();
            }
        }

        private void BindGridData()
        {
            try
            {
                if (CheckSearch())
                {
                    DateTime fromDate = Convert.ToDateTime(txtSearchFromDate.Text, DateTimeFormat);
                    DateTime toDate = Convert.ToDateTime(txtSearchToDate.Text, DateTimeFormat).AddHours(24);
                    int? agencyid = ddlSearchAgency.SelectedValue == "" ? (int?)null : int.Parse(ddlSearchAgency.SelectedValue);
                    string warrantyType = ddlSearchWarrantyType.SelectedValue;
                    grvData.DataSource = pa_WarrantyDetail.Statistics(agencyid, warrantyType, fromDate, toDate);
                    grvData.DataBind();
                }
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
        }

        private void BindDropDownData()
        {
            try
            {
                ddlSearchAgency.Items.Clear();
                bool isAdmin = IsRootAdmin();
                List<pa_Agency> list = pa_Agency.GetAll();
                pa_Agency.TransformLevel(ref list);
                foreach (var item in list)
                {
                    ddlSearchAgency.Items.Add(new ListItem(item.AgencyName.ShowNameLevel(item.Level), item.AgencyID.ToString()));
                }
                ddlSearchAgency.Items.Insert(0, new ListItem(""));
            }
            catch { }
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            BindGridData();
        }

        private bool CheckSearch()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(txtSearchFromDate.Text))
                    throw new Exception("Bắt buộc chọn ngày bắt đầu tìm kiếm");
                if (string.IsNullOrWhiteSpace(txtSearchToDate.Text))
                    throw new Exception("Bắt buộc chọn ngày kết thúc tìm kiếm");
                DateTime fromDate = Convert.ToDateTime(txtSearchFromDate.Text, DateTimeFormat);
                DateTime toDate = Convert.ToDateTime(txtSearchToDate.Text, DateTimeFormat);
                if (toDate < fromDate)
                    throw new Exception("Ngày kết thúc không được nhỏ hơn ngày bắt đầu");
                if (fromDate.AddMonths(3) < toDate)
                    throw new Exception("Giới hạn khoảng tìm kiếm là 3 tháng");
                ltrCheckSearch.Text = "";
                return true;
            }
            catch (Exception e)
            {
                ltrCheckSearch.Text = e.Message;
                return false;
            }
            
        }

        int sum1 = 0;
        protected void grvData_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    sum1 += int.Parse(e.Row.Cells[2].Text == "" ? "0" : e.Row.Cells[2].Text);
                }
                else if (e.Row.RowType == DataControlRowType.Footer)
                {
                    e.Row.Cells[1].Text = "<b>Tổng</b>";
                    e.Row.Cells[2].Text = sum1.ToString();
                }
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
        }

        protected void btnExport_Click(object sender, EventArgs e)
        {
            try
            {
                Authorize(Role.Export);
                if (!CheckSearch()) return;
                ExportToExcel(grvData, "ExportThongKeBaoHanh.xls");
                InsertChangeLog("Export thống kê bảo hành");
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
        }
    }
}